Implement Florida State Supplementary Payment (SSP)#7891
Merged
PavelMakarchuk merged 16 commits intoPolicyEngine:mainfrom Apr 22, 2026
Merged
Implement Florida State Supplementary Payment (SSP)#7891PavelMakarchuk merged 16 commits intoPolicyEngine:mainfrom
PavelMakarchuk merged 16 commits intoPolicyEngine:mainfrom
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #7891 +/- ##
===========================================
+ Coverage 85.36% 96.66% +11.30%
===========================================
Files 3 10 +7
Lines 41 180 +139
Branches 2 4 +2
===========================================
+ Hits 35 174 +139
Misses 6 6
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…ine#7890) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Fix redesign/provider_rate_offset 2011 value: $78.40 → $24.40 (was max OSS cap, not offset; SSA 2011 income limit $752.40 confirms) - Fix redesign/max_oss/couple 2011 value: $396.80 → $156.80 (SSA 2011 footnote b: couples treated as two individuals) - Replace broken 404 Appendix A-12 URL in all 9 parameter files - Update affected test expected values Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add protected/in_effect.yaml (false before 2024-07-01, true after) to properly gate the Protected track instead of using $0 values as sentinels. Formulas now use `if p.protected.in_effect:` to avoid accessing Protected parameters in pre-2024 periods. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Replace bare ssi_claim_is_joint with fl_oss_couple_rate_applies that checks both spouses are is_ssi_eligible AND in a qualifying facility. Also align eligibility with FAC 65A-2.033: use ssi > 0 (actual SSI receipt per statute) instead of uncapped_ssi > 0, and allow Medicaid facility residents to qualify via Group 2 (income standard). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Update 404 Appendix A-12 URL in 3 variable files (2024-10 → 2025-05) - Remove duplicate date entry in redesign/provider_rate_offset.yaml - Remove value annotations from reference titles in max_oss files - Fix descriptions: use allowed verbs and "this indicator" pattern - Spell out PNA acronym in label Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Medicaid facility: Group 1 only (ssi > 0), no Group 2 path — FAC 65A-2.036 defines no income standard for Medicaid facility residents - Simplify fl_oss_couple_rate_applies: rely on ssi_claim_is_joint for Title XIX separation (see PolicyEngine#8003) instead of inline same_category check - Add integration Cases 12-14: Medicaid facility negative path, couple with SSI equal-split, and earnings with SSI exclusions - Fix couple_rate_applies Case 6: mixed ALF/Medicaid simulates fixed federal behavior per 20 CFR 416.1149 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
# Conflicts: # policyengine_us/parameters/gov/household/household_state_benefits.yaml # policyengine_us/variables/household/income/spm_unit/spm_unit_benefits.py
FAC 65A-2.032/.033/.036 (current) cover only ALF, AFCH, and MHRTF. Medicaid facility is not an OSS coverage group. The $5/$10 supplement in the 2011 SSA report reflects an older FL program structure that has since been restructured; Medicaid institutional PNA is administered separately from OSS. Also: standardize Appendix A-12 URLs to the 2025-05 version; mark FL OSS as complete in programs.yaml with variable: fl_oss.
Couple rate gating (P1): - fl_oss_couple_rate_applies now requires both spouses on the same non-NONE program track. Appendix A-12 defines couple rates separately for Redesign and Protected; there is no mixed-track couple rate. - Added integration Case 12 (mixed-track MHRTF couple) that pins provider rate, max OSS, and fl_oss to individual-rate values; locks down the original bug directly. Protected track backdating (P2): - The 2024-06 Appendix A-12 shows Protected Program Standards columns for Jan 2023 and Jan 2024, proving Protected took effect before the previously modeled Jul 2024 date. - protected/in_effect.yaml: 2024-07-01 -> 2023-01-01. - protected/provider_rate_offset.yaml: 2024-07-01 -> 2023-01-01 ($185). - protected/max_oss: added 2023-01-01 values ($239 I, $478 C). - couple_provider_rate_reduction.yaml: 2024-07-01 -> 2023-01-01 ($73). - Redesign max_oss couple corrected from $386.80 to $368.80 for 2024-07-01 (matches 2024-06 Appendix and the 2x-individual rule that holds for every other max_oss pair in both Appendices; $386.80 in the 2025-05 Appendix appears to be a typo). - Every reference annotation now specifies which column / value each source document shows, so clicking each link lands on a PDF where the cited number is visibly present. - Tests updated: edge_cases Cases 8, 12, 13, 20, 28; fl_oss_max_oss Case 3; integration Cases 2 and 10. All 80 FL OSS tests pass.
Add a comment block above fl_oss_eligible explaining that OSS-eligible persons are always classified as OWN_HOUSEHOLD in ssi_federal_living_arrangement because none of the three reduction triggers (MEDICAL_TREATMENT_FACILITY, CHILD_IN_PARENTAL_HOUSEHOLD, ANOTHER_PERSONS_HOUSEHOLD) fires for a legitimate ALF/AFCH/MHRTF resident. The formula deliberately does not cross-check — FAC 65A-2 gates eligibility on facility type, not on SSI code — so inconsistent inputs are treated as user error.
PavelMakarchuk
approved these changes
Apr 22, 2026
Collaborator
PavelMakarchuk
left a comment
There was a problem hiding this comment.
Exceptional PR. Rigorous research against primary sources verified:
- FAC 65A-2.032/.033/.035/.036 and F.S. 409.212 (regulatory basis) ✓
- Redesign offset $24.40, Protected offset $185 back-calculated from Appendix A-12 ✓
- Couple reduction $0 → $73 → $97 back-calculated and cited ✓
- PNA $54 → $160 (per HB 5001) verified against SSA 2011 and both Appendix versions ✓
- Coverage Group 1 (SSI recipients) and Group 2 (within income standard) modeled; Groups 3 and 4 appropriately deferred with documented rationale
- Couple rate gating on joint claim + both SSI-eligible + both in facility + same non-NONE track (mixed tracks correctly get no couple rate)
- Honest disclosure of the $386.80 vs $368.80 discrepancy in the 2025-05 Appendix; back-calculation supports the $368.80 choice
- Excellent doc-comment in
fl_oss_eligible.pyexplaining the SSI living-arrangement cross-check rationale
Test coverage (80 OSS + 28 edge cases) is thorough, including a mismatched-track regression case and age boundary tests.
One of the most meticulously-researched state program PRs I've reviewed. Thanks for the detailed back-calculation notes and explicit assumption documentation.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Implements Florida's Optional State Supplementation (OSS) -- state supplement for SSI recipients in licensed residential care facilities (ALF, AFCH, MHRTF).
Closes #7890
Regulatory Authority
Program Overview
Eligibility (per FAC 65A-2.032 / .033)
is_ssi_eligiblessi > 0for Group 1;ssi_countable_income <= fl_oss_income_standardfor Group 2defined_for = StateCode.FLis_ssi_eligibleis_ssi_eligiblefl_oss_community_care_typeinput enumssi_countable_incomeCouple Rate Gating
Couple rate applies only when all of the following hold:
ssi_claim_is_joint(joint SSI claim)is_ssi_eligible(resources + immigration)Benefit Amounts (verified against Appendix A-12 source documents)
Redesign (ALF / AFCH / MHRTF with ACS)
Protected (MHRTF without ACS + 2001 "Gap" group) — in effect from 2023-01-01
Personal Needs Allowance (PNA)
Income Standards (FAC 65A-2.036)
Couple treatment: Couple provider rate = 2 × individual rate - reduction. Couple reduction: $0 (pre-2023), $73 (2023-01-01 to 2024-12-31), $97 (2025-01-01 onward) — verified by back-calculation across both tracks and Appendix versions.
COLA: Automatic via SSI FBR + fixed offsets ($24.40 Redesign / $185 Protected).
Formula:
OSS = min(max(0, provider_rate + PNA - countable_income), max_oss)Source Discrepancy Noted
The 2025-05 Appendix A-12 shows
$386.80for the Redesign couple max OSS in the July 2024 and January 2025 columns, but the 2024-06 Appendix shows$368.80for July 2024. $368.80 = 2 × $184.40, consistent with the 2×-individual rule that holds for every other max_oss pair in both Appendices. This PR uses$368.80on the assumption that$386.80in the 2025-05 Appendix is a typo.Not Modeled (by design)
ssi_countable_incomealready appliesFiles
Source Verification (completed)
ssi > 0per FAC 65A-2.033(1) wording "receiving SSI checks"Test plan